home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok83 / tked / help / help.tked < prev    next >
Text File  |  1993-11-04  |  5KB  |  154 lines

  1. /** Arexx Programm um das Wort unter dem Cursor
  2.  ** in einer Hilfs-Datei zu suchen, und den
  3.  ** entsprechenden Hilfstext auszugeben.
  4.  **
  5.  ** Installation  : In TKEd-AREXX-Menus mit
  6.                     async noreq Help.tked TKEd:Help/ARexx.hlp
  7.  ** 
  8.  ** Programm von : Christoph Kirsch, 1992
  9.  ** 
  10.  **  Hilfs-Datei : In der Variable HDatei definiert.
  11.  ** Trennzeichen : Jeder Hilfstext wird durch die in der Variable
  12.  **                TZeichen definierte Zeichenfolge abgeschlossen.
  13.  **
  14.  ** Ergänzung von: Tom Kroener
  15.  **                Cursor braucht nicht mehr auf dem ersten Buchstaben
  16.  **                des Wortes zu stehen, sondern kann beliebig im Wort
  17.  **                positioniert sein; außerdem wurden ein paar potentielle
  18.  **                Fehlerquellen (keine Leerzeichen, sondern ~+-* usw. 
  19.  **                zwischen den Worten) beseitigt
  20.  **/
  21.  
  22. options results
  23. address 'TKEd.1'
  24.  
  25. HDatei = arg(1)                     /* Hilfsdatei wird übergeben */
  26.  
  27. MakeTitle "Ich suche..."
  28.  
  29. TZeichen = "***"                    /* Trennzeichen */
  30. OderCode = "*"
  31. Ende = 0
  32.  
  33. DO WHILE Ende = 0
  34.   GetColumnNr
  35.   IF result = 1 THEN Ende = 1
  36.   Cursor "LEFT"
  37.   GetChar
  38.   IF (result=" ") | (result='(') | (result=')') | (result='=') | (result='/') | (result='*') | (result='-') | (result='+') | (result='|') | (result='~') | (result='#') | (result=';') | (result='"') | (result="'")
  39.     THEN DO
  40.       Ende = 1
  41.       NextWord
  42.   END;
  43. END;
  44.  
  45. GetChar
  46. Zeichen = result
  47.  
  48. GetChar                             /* Zeichen unter Cursor */
  49. Zeichen = result
  50. Ende = 0
  51. Wort = Zeichen                      /* Wort unter Cursor */
  52. GetLineLen                          /* Zeilenlänge feststellen */
  53. MaxSpalte = result+1
  54.  
  55. DO WHILE Ende = 0                   /* Nächstes Leerzeichen */
  56.   Cursor "RIGHT"                    /* oder Zeilenende suchen */
  57.   GetChar                           /* und solange Buchstaben */
  58.   Zeichen = result                  /* anhängen */
  59.   GetColumnNr
  60.   Spalte = result
  61.   IF Spalte = MaxSpalte THEN Ende = 1
  62.   IF (Zeichen=" ") | (Zeichen='(') | (Zeichen=')') | (Zeichen='=') | (Zeichen='/') | (Zeichen='*') | (Zeichen='-') | (Zeichen='+') | (Zeichen='|') | (Zeichen='~') | (Zeichen='#') | (Zeichen=';') | (Zeichen="'") | (Zeichen='"') THEN Ende = 1
  63.   IF Ende = 0 THEN Wort = Wort || Zeichen
  64. END;
  65. Wort = upper(Wort)
  66. IF ~open('datei',HDatei,'Read')     /* Hilfsdatei öffnen */
  67.   THEN DO
  68.     Request1 "Kann Hilfsdatei nicht öffnen!"
  69.     EXIT 5
  70.   END
  71.  
  72. DO WHILE ~EOF('datei')             /* Trennzeichen suchen */
  73.   Text = ReadLn('datei')
  74.   IF Text = TZeichen               /* Wenn gefunden, dann ist nächste */
  75.     THEN DO                        /* Zeile ein Suchbegriff */
  76.       Abb = 0
  77.       Ja = 0
  78.       DO WHILE (Abb = 0)
  79.         Text = ReadLn('datei')     /* Suchbegriff vergleichen */
  80.         IF Wort = upper(Text)
  81.           THEN DO
  82.             Ja = 1
  83.             Abb = 1
  84.           END
  85.         ELSE DO
  86.           Text = ReadLn('datei')
  87.           IF ~(Text = OderCode) THEN Abb = 1
  88.         END
  89.       END
  90.       IF Ja = 1
  91.       THEN DO                      /* wenn gleich, dann */
  92.         WBtoFront
  93.         call open('hcon','CON:0/11/640/189/Hilfe')
  94.         DO WHILE ~EOF('datei')
  95.           Text = ReadLn('datei')
  96.           DO WHILE (Text = OderCode)
  97.             Text = ReadLn('datei')
  98.             Text = ReadLn('datei')
  99.           END
  100.           IF ~(Text = TZeichen) THEN call WriteLn('hcon',Text)
  101.           ELSE BREAK
  102.         END
  103.         call WriteLn('hcon','RETURN drücken.')
  104.         call ReadLn 'hcon'
  105.         call Close('hcon')
  106.         call Close('datei')
  107.         TKEdToFront
  108.         EXIT 0
  109.       END
  110.     END
  111. END
  112.  
  113. call close('datei')                 /* keinen Text gefunden */
  114.  
  115. Request2 "Keinen Hilfstext gefunden! Stichworte zeigen?"
  116. index = result
  117.  
  118. if index=10 then exit 0             /* kein Index -> Ende */
  119.  
  120. IF ~open('datei',HDatei,'Read')     /* Hilfsdatei erneut öffnen */
  121.   THEN DO
  122.     Request1 "Kann Hilfsdatei nicht öffnen!"
  123.     EXIT 5
  124.   END
  125.  
  126. WBtoFront
  127. call open('hcon','CON:0/11/640/189/Mögliche Stichworte')
  128.  
  129. voll = 0                            /* Alle Stichworte anzeigen */
  130. do while ~eof('datei')
  131.   text = readln('datei')
  132.   if (text = TZeichen) | (text = OderCode)
  133.   then do
  134.     text = readln('datei')
  135.     call writeln('hcon',text)
  136.     voll = voll + 1
  137.     if voll = 19
  138.     then do
  139.       call writeln('hcon','')
  140.       call writeln('hcon','RETURN drücken für mehr.')
  141.       call readln 'hcon'
  142.       voll = 0
  143.     end
  144.   end
  145. end
  146. call writeln('hcon','ENDE - Taste drücken.')
  147. call readln 'hcon'
  148.  
  149. TKEdtoFront
  150. call close('datei')
  151.  
  152. EXIT 0
  153.  
  154.